package com.it.mycommonsio;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;

import java.io.*;
import java.util.List;

public class CommonsIoDemo1 {
    public static void main(String[] args) throws IOException {
        /*
        FileUtils类
            static void copyFile(File srcFile, File destFile)	            复制文件
            static void copyDirectory(File srcDir, File destDir)	        复制文件夹
            static void copyDirectoryToDirectory(File srcDir, File destDir)	复制文件夹
            static void deleteDirectory(File directory)	                    删除文件夹
            static void cleanDirectory(File directory)	                    清空文件夹
            static String readFileToString(File file, Charset encoding)	    读取文件中的数据变成成字符串
            static void write(File file, CharSequence data, String encoding)写出数据
        IOUtils类
            public static int copy(InputStream input, OutputStream output)	复制文件
            public static int copyLarge(Reader input, Writer output)	    复制大文件
            public static String readLines(Reader input)	                读取数据
            public static void write(String data, OutputStream output)	    写出数据
         */
        /*复制文件
        File src = new File("D:\\java\\basic-code\\myio\\src\\a.txt");
        File dest = new File("D:\\java\\basic-code\\myio\\dest.txt");
        FileUtils.copyFile(src,dest);*/

        /*复制文件夹
        File src = new File("D:\\aaa");
        File dest = new File("D:\\copyaaa");
        FileUtils.copyDirectory(src,dest);*/

        /*复制文件夹，将整个aaa文件复制到copyaaa2文件目录下
        File src = new File("D:\\aaa");
        File dest = new File("D:\\copyaaa2");
        FileUtils.copyDirectoryToDirectory(src,dest);*/

        /*删除文件
        FileUtils.deleteDirectory(new File("D:\\copyaaa2"));*/

       /* 清除文件夹
        FileUtils.cleanDirectory(new File("D:\\copyaaa"));*/

        /*读取文件中的数据变成成字符串
        String gbk = FileUtils.readFileToString(new File("D:\\java\\basic-code\\myio\\src\\a.txt"), "GBK");
        System.out.println(gbk);*/

        /*写出数据
        File file = new File("D:\\java\\basic-code\\myio\\src\\b.txt");
        String content = "hello world";
        FileUtils.write(file,content,"UTF-8");*/

        //IOUtils类
        /*复制文件
        InputStream input = new FileInputStream("D:\\java\\basic-code\\myio\\src\\csb.txt");
        OutputStream output = new FileOutputStream("D:\\java\\basic-code\\myio\\src\\b.txt");
        int copy = IOUtils.copy(input, output);*/

        /*复制大文件
        Reader src = new FileReader("D:\\java\\basic-code\\myio\\src\\视频.txt");
        Writer dest = new FileWriter("D:\\java\\basic-code\\myio\\dest.txt");
        int copy = IOUtils.copy(src, dest);
        IOUtils.closeQuietly(src);//确保了流在使用后被关闭，且即使关闭过程中出现异常，也不会影响程序的正常运行*/

        /*读取数据
        Reader input = new BufferedReader(new FileReader("D:\\java\\basic-code\\myio\\src\\csb.txt"));
        String[] lines = IOUtils.readLines(input).toArray(new String[0]);
        //IOUtils.readLines(Reader input) 方法返回的是一个 List<String> 类型的对象，
        // 而不是 String[] 数组。这个 List 对象包含了从 Reader 中读取的所有行。
        // 如果你需要一个 String[] 数组，可以使用 List 的 toArray() 方法来实现。
        for (String line : lines) {
            System.out.println(line);
        }*/

        /*写出数据，会将原来文件里的内容清空，再将字符串填入
        OutputStream output = new FileOutputStream("D:\\java\\basic-code\\myio\\src\\csb.txt");
        String s = "你好啊";
        IOUtils.write(s, output);*/
    }
}
